home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / AIncludes / FSM.a < prev    next >
Text File  |  1996-05-01  |  37KB  |  1,199 lines

  1. ;
  2. ;    File:        FSM.a
  3. ;
  4. ;    Contains:    HFS External File System Interfaces.
  5. ;
  6. ;    Version:    Technology:    System 7.5
  7. ;                Release:    Universal Interfaces 3.0d3 on Copland DR1
  8. ;
  9. ;    Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10. ;
  11. ;    Bugs?:        If you find a problem with this file, send the file and version
  12. ;                information (from above) and the problem description to:
  13. ;
  14. ;                    Internet:    apple.bugs@applelink.apple.com
  15. ;                    AppleLink:    APPLE.BUGS
  16. ;
  17. ;
  18.     IF &TYPE('__FSM__') = 'UNDEFINED' THEN
  19. __FSM__ SET 1
  20.  
  21.     IF &TYPE('__FILES__') = 'UNDEFINED' THEN
  22.     include 'Files.a'
  23.     ENDIF
  24.     IF FOR_SYSTEM7_ONLY THEN
  25.     IF OLDROUTINELOCATIONS THEN
  26. ;
  27. ; * gestaltFSMVersion should be in Gestalt.h
  28. ; *
  29. ; * VCBPtr, new volume mount flags, and VolumeMountInfoHeader
  30. ; * should be in Files.h
  31. ;
  32. ;     The new volume mount flags 
  33.  
  34. volMountInteractBit                EQU        15                    ; Input to VolumeMount: If set, it's OK for the file system 
  35. volMountInteractMask            EQU        $8000                ; to perform user interaction to mount the volume 
  36. volMountChangedBit                EQU        14                    ; Output from VoumeMount: If set, the volume was mounted, but 
  37. volMountChangedMask                EQU        $4000                ; the volume mounting information record needs to be updated. 
  38. volMountFSReservedMask            EQU        $00FF                ; bits 0-7 are defined by each file system for its own use 
  39. volMountSysReservedMask            EQU        $FF00                ; bits 8-15 are reserved for Apple system use 
  40. ;
  41. ; * additional volume mount info record
  42. ;
  43. VolumeMountInfoHeader    RECORD 0
  44. length                     ds.w    1                ; offset: $0 (0)        ;  length of location data (including self) 
  45. media                     ds.l    1                ; offset: $2 (2)        ;  type of media (must be registered with Apple) 
  46. flags                     ds.w    1                ; offset: $6 (6)        ;  volume mount flags. Variable length data follows 
  47. sizeof                     EQU *                    ; size:   $8 (8)
  48.                         ENDR
  49. ; typedef struct VolumeMountInfoHeader * VolumeMountInfoHeaderPtr
  50.  
  51.  
  52. gestaltFSMVersion                EQU        'fsm '
  53. ; typedef struct VCB *                    VCBPtr
  54.  
  55.     ENDIF
  56. ;
  57. ; * Miscellaneous file system values not in Files.h
  58. ;
  59.  
  60. fsUsrCNID                        EQU        16                    ; First assignable directory or file number 
  61.                                                             ;    File system trap word attribute bits 
  62. kHFSBit                            EQU        9                    ; HFS call: bit 9 
  63. kHFSMask                        EQU        $0200
  64. kAsyncBit                        EQU        10                    ; Asynchronous call: bit 10 
  65. kAsyncMask                        EQU        $0400
  66. ;
  67. ; * HFSCIProc selectCode values
  68. ; * Note: The trap attribute bits (the HFS bit and the asynchronous bit)
  69. ; * may be set in these selectCode values.
  70. ;
  71.  
  72. kFSMOpen                        EQU        $A000
  73. kFSMClose                        EQU        $A001
  74. kFSMRead                        EQU        $A002
  75. kFSMWrite                        EQU        $A003
  76. kFSMGetVolInfo                    EQU        $A007
  77. kFSMCreate                        EQU        $A008
  78. kFSMDelete                        EQU        $A009
  79. kFSMOpenRF                        EQU        $A00A
  80. kFSMRename                        EQU        $A00B
  81. kFSMGetFileInfo                    EQU        $A00C
  82. kFSMSetFileInfo                    EQU        $A00D
  83. kFSMUnmountVol                    EQU        $A00E
  84. kFSMMountVol                    EQU        $A00F
  85. kFSMAllocate                    EQU        $A010
  86. kFSMGetEOF                        EQU        $A011
  87. kFSMSetEOF                        EQU        $A012
  88. kFSMFlushVol                    EQU        $A013
  89. kFSMGetVol                        EQU        $A014
  90. kFSMSetVol                        EQU        $A015
  91. kFSMEject                        EQU        $A017
  92. kFSMGetFPos                        EQU        $A018
  93. kFSMOffline                        EQU        $A035
  94. kFSMSetFilLock                    EQU        $A041
  95. kFSMRstFilLock                    EQU        $A042
  96. kFSMSetFilType                    EQU        $A043
  97. kFSMSetFPos                        EQU        $A044
  98. kFSMFlushFile                    EQU        $A045                ;    The File System HFSDispatch selectCodes 
  99. kFSMOpenWD                        EQU        $0001
  100. kFSMCloseWD                        EQU        $0002
  101. kFSMCatMove                        EQU        $0005
  102. kFSMDirCreate                    EQU        $0006
  103. kFSMGetWDInfo                    EQU        $0007
  104. kFSMGetFCBInfo                    EQU        $0008
  105. kFSMGetCatInfo                    EQU        $0009
  106. kFSMSetCatInfo                    EQU        $000A
  107. kFSMSetVolInfo                    EQU        $000B
  108. kFSMLockRng                        EQU        $0010
  109. kFSMUnlockRng                    EQU        $0011
  110. kFSMCreateFileIDRef                EQU        $0014
  111. kFSMDeleteFileIDRef                EQU        $0015
  112. kFSMResolveFileIDRef            EQU        $0016
  113. kFSMExchangeFiles                EQU        $0017
  114. kFSMCatSearch                    EQU        $0018
  115. kFSMOpenDF                        EQU        $001A
  116. kFSMMakeFSSpec                    EQU        $001B                ;    The Desktop Manager HFSDispatch selectCodes 
  117. kFSMDTGetPath                    EQU        $0020
  118. kFSMDTCloseDown                    EQU        $0021
  119. kFSMDTAddIcon                    EQU        $0022
  120. kFSMDTGetIcon                    EQU        $0023
  121. kFSMDTGetIconInfo                EQU        $0024
  122. kFSMDTAddAPPL                    EQU        $0025
  123. kFSMDTRemoveAPPL                EQU        $0026
  124. kFSMDTGetAPPL                    EQU        $0027
  125. kFSMDTSetComment                EQU        $0028
  126. kFSMDTRemoveComment                EQU        $0029
  127. kFSMDTGetComment                EQU        $002A
  128. kFSMDTFlush                        EQU        $002B
  129. kFSMDTReset                        EQU        $002C
  130. kFSMDTGetInfo                    EQU        $002D
  131. kFSMDTOpenInform                EQU        $002E
  132. kFSMDTDelete                    EQU        $002F                ;    The AppleShare HFSDispatch selectCodes 
  133. kFSMGetVolParms                    EQU        $0030
  134. kFSMGetLogInInfo                EQU        $0031
  135. kFSMGetDirAccess                EQU        $0032
  136. kFSMSetDirAccess                EQU        $0033
  137. kFSMMapID                        EQU        $0034
  138. kFSMMapName                        EQU        $0035
  139. kFSMCopyFile                    EQU        $0036
  140. kFSMMoveRename                    EQU        $0037
  141. kFSMOpenDeny                    EQU        $0038
  142. kFSMOpenRFDeny                    EQU        $0039
  143. kFSMGetXCatInfo                    EQU        $003A
  144. kFSMGetVolMountInfoSize            EQU        $003F
  145. kFSMGetVolMountInfo                EQU        $0040
  146. kFSMVolumeMount                    EQU        $0041
  147. kFSMShare                        EQU        $0042
  148. kFSMUnShare                        EQU        $0043
  149. kFSMGetUGEntry                    EQU        $0044
  150. kFSMGetForeignPrivs                EQU        $0060
  151. kFSMSetForeignPrivs                EQU        $0061
  152. ;
  153. ; * UTDetermineVol status values
  154. ;
  155.  
  156. dtmvError                        EQU        0                    ; param error 
  157. dtmvFullPathame                    EQU        1                    ; determined by full pathname 
  158. dtmvVRefNum                        EQU        2                    ; determined by volume refNum 
  159. dtmvWDRefNum                    EQU        3                    ; determined by working directory refNum 
  160. dtmvDriveNum                    EQU        4                    ; determined by drive number 
  161. dtmvDefault                        EQU        5                    ; determined by default volume 
  162. ;
  163. ; * UTGetBlock options
  164. ;
  165.  
  166. gbDefault                        EQU        0                    ; default value - read if not found 
  167.                                                             ;    bits and masks 
  168. gbReadBit                        EQU        0                    ; read block from disk (forced read) 
  169. gbReadMask                        EQU        $0001
  170. gbExistBit                        EQU        1                    ; get existing cache block 
  171. gbExistMask                        EQU        $0002
  172. gbNoReadBit                        EQU        2                    ; don't read block from disk if not found in cache 
  173. gbNoReadMask                    EQU        $0004
  174. gbReleaseBit                    EQU        3                    ; release block immediately after GetBlock 
  175. gbReleaseMask                    EQU        $0008
  176. ;
  177. ; * UTReleaseBlock options
  178. ;
  179.  
  180. rbDefault                        EQU        0                    ; default value - just mark the buffer not in-use 
  181.                                                             ;    bits and masks 
  182. rbWriteBit                        EQU        0                    ; force write buffer to disk 
  183. rbWriteMask                        EQU        $0001
  184. rbTrashBit                        EQU        1                    ; trash buffer contents after release 
  185. rbTrashMask                        EQU        $0002
  186. rbDirtyBit                        EQU        2                    ; mark buffer dirty 
  187. rbDirtyMask                        EQU        $0004
  188. rbFreeBit                        EQU        3                    ; free the buffer (save in the hash) 
  189. rbFreeMask                        EQU        $000A                ; rbFreeMask (rbFreeBit + rbTrashBit) works as rbTrash on < System 7.0 RamCache; on >= System 7.0, rbfreeMask overrides rbTrash 
  190. ;
  191. ; * UTFlushCache options
  192. ;
  193.  
  194. fcDefault                        EQU        0                    ; default value - just flush any dirty buffers 
  195.                                                             ;    bits and masks 
  196. fcTrashBit                        EQU        1                    ; trash buffers after flushing 
  197. fcTrashMask                        EQU        $0002
  198. fcFreeBit                        EQU        3                    ; free buffers after flushing 
  199. fcFreeMask                        EQU        $0008                ; fcFreeMask works as fcTrash on < System 7.0 RamCache 
  200. ;
  201. ; * UTCacheReadIP and UTCacheWriteIP cacheOption
  202. ;
  203.  
  204. noCacheBit                        EQU        5                    ; don't cache this please 
  205. noCacheMask                        EQU        $0020
  206. rdVerifyBit                        EQU        6                    ; read verify 
  207. rdVerifyMask                    EQU        $0040
  208. ;
  209. ; * Cache routine internal error codes
  210. ;
  211.  
  212. chNoBuf                            EQU        1                    ; no free cache buffers (all in use) 
  213. chInUse                            EQU        2                    ; requested block in use 
  214. chnotfound                        EQU        3                    ; requested block not found 
  215. chNotInUse                        EQU        4                    ; block being released was not in use 
  216. ;
  217. ; * FCBRec.fcbFlags bits
  218. ;
  219.  
  220. fcbWriteBit                        EQU        0                    ; Data can be written to this file 
  221. fcbWriteMask                    EQU        $01
  222. fcbResourceBit                    EQU        1                    ; This file is a resource fork 
  223. fcbResourceMask                    EQU        $02
  224. fcbWriteLockedBit                EQU        2                    ; File has a locked byte range 
  225. fcbWriteLockedMask                EQU        $04
  226. fcbSharedWriteBit                EQU        4                    ; File is open for shared write access 
  227. fcbSharedWriteMask                EQU        $10
  228. fcbFileLockedBit                EQU        5                    ; File is locked (write-protected) 
  229. fcbFileLockedMask                EQU        $20
  230. fcbOwnClumpBit                    EQU        6                    ; File has clump size specified in FCB 
  231. fcbOwnClumpMask                    EQU        $40
  232. fcbModifiedBit                    EQU        7                    ; File has changed since it was last flushed 
  233. fcbModifiedMask                    EQU        $80
  234. ;
  235. ; * ExtFileProc options
  236. ;
  237.  
  238. extendFileAllBit                EQU        0                    ; allocate all requested bytes or none 
  239. extendFileAllMask                EQU        $0001
  240. extendFileContigBit                EQU        1                    ; force contiguous allocation 
  241. extendFileContigMask            EQU        $0002
  242. ;
  243. ; *    HFS Component Interface constants
  244. ;
  245. ;
  246. ; * compInterfMask bits specific to HFS component
  247. ;
  248.  
  249. hfsCIDoesHFSBit                    EQU        23                    ; set if file system supports HFS calls 
  250. hfsCIDoesHFSMask                EQU        $00800000
  251. hfsCIDoesAppleShareBit            EQU        22                    ; set if AppleShare calls supported 
  252. hfsCIDoesAppleShareMask            EQU        $00400000
  253. hfsCIDoesDeskTopBit                EQU        21                    ; set if Desktop Database calls supported 
  254. hfsCIDoesDeskTopMask            EQU        $00200000
  255. hfsCIDoesDynamicLoadBit            EQU        20                    ; set if dynamically loading code resource 
  256. hfsCIDoesDynamicLoadMask        EQU        $00100000            ;        supported 
  257. hfsCIResourceLoadedBit            EQU        19                    ; set if code resource already loaded 
  258. hfsCIResourceLoadedMask            EQU        $00080000
  259. hfsCIHasHLL2PProcBit            EQU        18                    ; set if FFS' log2PhyProc and Extendfile proc 
  260. hfsCIHasHLL2PProcMask            EQU        $00040000            ; is written in a high level language. (i.e., uses Pascal calling convention) 
  261. ;
  262. ; *    Disk Initialization Component Interface constants
  263. ;
  264. ;
  265. ; * compInterfMask bits specific to Disk Initialization component
  266. ;
  267.  
  268. diCIHasExtFormatParamsBit        EQU        18                    ; set if file system needs extended format 
  269. diCIHasExtFormatParamsMask        EQU        $00040000            ;        parameters 
  270. diCIHasMultiVolTypesBit            EQU        17                    ; set if file system supports more than one 
  271. diCIHasMultiVolTypesMask        EQU        $00020000            ;        volume type 
  272. diCIDoesSparingBit                EQU        16                    ; set if file system supports disk sparing 
  273. diCIDoesSparingMask                EQU        $00010000
  274. diCILiveBit                        EQU        0                    ; set if file system is candidate for current 
  275. diCILiveMask                    EQU        $00000001            ;        formatting operation (set by PACK2) 
  276. ;
  277. ; * Disk Initialization Component Function selectors
  278. ;
  279.  
  280. diCILoad                        EQU        1                    ; Make initialization code memory resident 
  281. diCIUnload                        EQU        2                    ; Make initialization code purgeable 
  282. diCIEvaluateSizeChoices            EQU        3                    ; Evaluate size choices 
  283. diCIExtendedZero                EQU        4                    ; Write an empty volume directory 
  284. diCIValidateVolName                EQU        5                    ; Validate volume name 
  285. diCIGetVolTypeInfo                EQU        6                    ; get volume type info 
  286. diCIGetFormatString                EQU        7                    ; get dialog format string 
  287. diCIGetExtFormatParams            EQU        8                    ; get extended format parameters 
  288. diCIGetDefectList                EQU        9                    ; return the defect list for the indicated disk - reserved for future use 
  289. ;
  290. ; * Constants used in the DICIEvaluateSizeRec and FormatListRec
  291. ;
  292.  
  293. diCIFmtListMax                    EQU        8                    ; maximum number of format list entries in DICIEvaluateSizeRec.numSizeEntries 
  294.                                                             ;    bits in FormatListRec.formatFlags: 
  295. diCIFmtFlagsValidBit            EQU        7                    ; set if sec, side, tracks valid 
  296. diCIFmtFlagsValidMask            EQU        $80
  297. diCIFmtFlagsCurrentBit            EQU        6                    ; set if current disk has this fmt 
  298. diCIFmtFlagsCurrentMask            EQU        $40                    ;    bits in FormatListRec.sizeListFlags: 
  299. diCISizeListOKBit                EQU        15                    ; set if this disk size usable 
  300. diCISizeListOKMask                EQU        $8000
  301. ;
  302. ; * DICIGetFormatStringRec.stringKind format strings
  303. ;
  304.  
  305. diCIAlternateFormatStr            EQU        1                    ; get alternate format  string (Balloon Help) 
  306. diCISizePresentationStr            EQU        2                    ; get size presentation string (for dialog) 
  307. ;
  308. ; * Error codes returned by Disk Sparing
  309. ;
  310.  
  311. diCIUserCancelErr                EQU        1                    ; user cancelled the disk init 
  312. diCICriticalSectorBadErr        EQU        20                    ; critical sectors are bad (hopeless)    
  313. diCISparingFailedErr            EQU        21                    ; disk cannot be spared 
  314. diCITooManyBadSectorsErr        EQU        22                    ; too many bad sectors 
  315. diCIUnknownVolTypeErr            EQU        23                    ; the volume type passed in diCIExtendedZero paramBlock is not supported 
  316. diCIVolSizeMismatchErr            EQU        24                    ; specified volume size doesn't match with formatted disk size 
  317. diCIUnknownDICallErr            EQU        25                    ; bogus DI function call selector 
  318. diCINoSparingErr                EQU        26                    ; disk is bad but the target FS doesn't do disk sparing 
  319. diCINoExtendInfoErr                EQU        27                    ; missing file system specific extra parameter in diCIExtendedZero call 
  320. diCINoMessageTextErr            EQU        28                    ; missing message text in DIReformat call 
  321. ;
  322. ; *    File System Manager constants
  323. ;
  324. ;
  325. ; * Miscellaneous constants used by FSM
  326. ;
  327.  
  328. fsdVersion1                        EQU        1                    ; current version of FSD record 
  329. fsmIgnoreFSID                    EQU        $FFFE                ; this FSID should be ignored by the driver 
  330. fsmGenericFSID                    EQU        $FFFF                ; unknown foreign file system ID 
  331. ;
  332. ; * compInterfMask bits common to all FSM components
  333. ;
  334.  
  335. fsmComponentEnableBit            EQU        31                    ; set if FSM component interface is enabled 
  336. fsmComponentEnableMask            EQU        $80000000
  337. fsmComponentBusyBit                EQU        30                    ; set if FSM component interface is busy 
  338. fsmComponentBusyMask            EQU        $40000000
  339. ;
  340. ; * Selectors for GetFSInfo
  341. ;
  342.  
  343. fsmGetFSInfoByIndex                EQU        -1                    ; get fs info by index 
  344. fsmGetFSInfoByFSID                EQU        0                    ; get fs info by FSID 
  345. fsmGetFSInfoByRefNum            EQU        1                    ; get fs info by file/vol refnum 
  346. ;
  347. ; * InformFSM messages
  348. ;
  349.  
  350. fsmNopMessage                    EQU        0                    ; nop 
  351. fsmDrvQElChangedMessage            EQU        1                    ; DQE has changed 
  352. fsmGetFSIconMessage                EQU        2                    ; Get FFS's disk icon 
  353. ;
  354. ; * Messages passed to the fileSystemCommProc
  355. ;
  356.  
  357. ffsNopMessage                    EQU        0                    ; nop, should always return noErr 
  358. ffsGetIconMessage                EQU        1                    ; return disk icon and mask 
  359. ffsIDDiskMessage                EQU        2                    ; identify the about-to-be-mounted volume 
  360. ffsLoadMessage                    EQU        3                    ; load in the FFS 
  361. ffsUnloadMessage                EQU        4                    ; unload the FFS 
  362. ffsIDVolMountMessage            EQU        5                    ; identify a VolMountInfo record 
  363. ffsInformMessage                EQU        6                    ; FFS defined message 
  364. ffsGetIconInfoMessage            EQU        7
  365. ;
  366. ; * Error codes from FSM functions
  367. ;
  368.  
  369. fsmFFSNotFoundErr                EQU        -431                ; Foreign File system does not exist - new Pack2 could return this error too 
  370. fsmBusyFFSErr                    EQU        -432                ; File system is busy, cannot be removed 
  371. fsmBadFFSNameErr                EQU        -433                ; Name length not 1 <= length <= 31 
  372. fsmBadFSDLenErr                    EQU        -434                ; FSD size incompatible with current FSM vers 
  373. fsmDuplicateFSIDErr                EQU        -435                ; FSID already exists on InstallFS 
  374. fsmBadFSDVersionErr                EQU        -436                ; FSM version incompatible with FSD 
  375. fsmNoAlternateStackErr            EQU        -437                ; no alternate stack for HFS CI 
  376. fsmUnknownFSMMessageErr            EQU        -438                ; unknown message passed to FSM 
  377. ;
  378. ; *    HFS Utility routine records
  379. ;
  380. ;
  381. ; * record used by UTGetPathComponentName
  382. ;
  383. ParsePathRec            RECORD 0
  384. namePtr                     ds.l    1                ; offset: $0 (0)        ;  pathname to parse 
  385. startOffset                 ds.w    1                ; offset: $4 (4)        ;  where to start parsing 
  386. componentLength             ds.w    1                ; offset: $6 (6)        ;  the length of the pathname component parsed 
  387. moreName                 ds.b    1                ; offset: $8 (8)        ;  non-zero if there are more components after this one 
  388. foundDelimiter             ds.b    1                ; offset: $9 (9)        ;  non-zero if parsing stopped because a colon (:) delimiter was found 
  389. sizeof                     EQU *                    ; size:   $A (10)
  390.                         ENDR
  391. ; typedef struct ParsePathRec *            ParsePathRecPtr
  392.  
  393. WDCBRec                    RECORD 0
  394. wdVCBPtr                 ds.l    1                ; offset: $0 (0)        ;  Pointer to VCB of this working directory 
  395. wdDirID                     ds.l    1                ; offset: $4 (4)        ;  Directory ID number of this working directory 
  396. wdCatHint                 ds.l    1                ; offset: $8 (8)        ;  Hint for finding this working directory 
  397. wdProcID                 ds.l    1                ; offset: $C (12)        ;  Process that created this working directory 
  398. sizeof                     EQU *                    ; size:   $10 (16)
  399.                         ENDR
  400. ; typedef struct WDCBRec *                WDCBRecPtr
  401.  
  402. FCBRec                    RECORD 0
  403. fcbFlNm                     ds.l    1                ; offset: $0 (0)        ;  FCB file number. Non-zero marks FCB used 
  404. fcbFlags                 ds.b    1                ; offset: $4 (4)        ;  FCB flags 
  405. fcbTypByt                 ds.b    1                ; offset: $5 (5)        ;  File type byte 
  406. fcbSBlk                     ds.w    1                ; offset: $6 (6)        ;  File start block (in alloc size blks) 
  407. fcbEOF                     ds.l    1                ; offset: $8 (8)        ;  Logical length or EOF in bytes 
  408. fcbPLen                     ds.l    1                ; offset: $C (12)        ;  Physical file length in bytes 
  409. fcbCrPs                     ds.l    1                ; offset: $10 (16)        ;  Current position within file 
  410. fcbVPtr                     ds.l    1                ; offset: $14 (20)        ;  Pointer to the corresponding VCB 
  411. fcbBfAdr                 ds.l    1                ; offset: $18 (24)        ;  File's buffer address 
  412. fcbFlPos                 ds.w    1                ; offset: $1C (28)        ;  Directory block this file is in 
  413. ;  FCB Extensions for HFS 
  414. fcbClmpSize                 ds.l    1                ; offset: $1E (30)        ;  Number of bytes per clump 
  415. fcbBTCBPtr                 ds.l    1                ; offset: $22 (34)        ;  Pointer to B*-Tree control block for file 
  416. fcbExtRec                 ds.l    3                ; offset: $26 (38)        ;  First 3 file extents 
  417. fcbFType                 ds.l    1                ; offset: $32 (50)        ;  File's 4 Finder Type bytes 
  418. fcbCatPos                 ds.l    1                ; offset: $36 (54)        ;  Catalog hint for use on Close 
  419. fcbDirID                 ds.l    1                ; offset: $3A (58)        ;  Parent Directory ID 
  420. fcbCName                 ds        Str31            ; offset: $3E (62)        ;  CName of open file 
  421. sizeof                     EQU *                    ; size:   $5E (94)
  422.                         ENDR
  423. ; typedef struct FCBRec *                FCBRecPtr
  424.  
  425. ;
  426. ; *    HFS Component Interface records
  427. ;
  428. HFSCIRec                RECORD 0
  429. compInterfMask             ds.l    1                ; offset: $0 (0)        ;  component flags 
  430. compInterfProc             ds.l    1                ; offset: $4 (4)        ;  pointer to file system call processing code 
  431. log2PhyProc                 ds.l    1                ; offset: $8 (8)        ;  pointer to Lg2PhysProc() code 
  432. stackTop                 ds.l    1                ; offset: $C (12)        ;  file system stack top 
  433. stackSize                 ds.l    1                ; offset: $10 (16)        ;  file system stack size 
  434. stackPtr                 ds.l    1                ; offset: $14 (20)        ;  current file system stack pointer 
  435. reserved3                 ds.l    1                ; offset: $18 (24)        ;  --reserved, must be zero-- 
  436. idSector                 ds.l    1                ; offset: $1C (28)        ;  Sector you need to ID a local volume. For networked volumes, this must be -1 
  437. reserved2                 ds.l    1                ; offset: $20 (32)        ;  --reserved, must be zero-- 
  438. reserved1                 ds.l    1                ; offset: $24 (36)        ;  --reserved, must be zero-- 
  439. sizeof                     EQU *                    ; size:   $28 (40)
  440.                         ENDR
  441. ; typedef struct HFSCIRec *                HFSCIRecPtr
  442.  
  443. ;
  444. ; *    Disk Initialization Component Interface records
  445. ;
  446. DICIRec                    RECORD 0
  447. compInterfMask             ds.l    1                ; offset: $0 (0)        ;  component flags 
  448. compInterfProc             ds.l    1                ; offset: $4 (4)        ;  pointer to call processing code 
  449. maxVolNameLength         ds.w    1                ; offset: $8 (8)        ;  maximum length of your volume name 
  450. blockSize                 ds.w    1                ; offset: $A (10)        ;  your file system's block size 
  451. reserved3                 ds.l    1                ; offset: $C (12)        ;  --reserved, must be zero-- 
  452. reserved2                 ds.l    1                ; offset: $10 (16)        ;  --reserved, must be zero-- 
  453. reserved1                 ds.l    1                ; offset: $14 (20)        ;  --reserved, must be zero-- 
  454. sizeof                     EQU *                    ; size:   $18 (24)
  455.                         ENDR
  456. ; typedef struct DICIRec *                DICIRecPtr
  457.  
  458. ;
  459. ; * FormatListRec as returned by the .Sony disk driver's
  460. ; * Return Format List status call (csCode = 6).
  461. ; * If the status call to get this list for a drive is not
  462. ; * implemented by the driver, then a list with one entry
  463. ; * is contructed from the drive queue element for the drive.
  464. ;
  465. FormatListRec            RECORD 0
  466. volSize                     ds.l    1                ; offset: $0 (0)        ;  disk capacity in SECTORs 
  467. formatFlags                 ds.b    1                ; offset: $4 (4)        ;  flags 
  468. sectorsPerTrack             ds.b    1                ; offset: $5 (5)        ;  sectors per track side 
  469. tracks                     ds.w    1                ; offset: $6 (6)        ;  number of tracks 
  470. sizeof                     EQU *                    ; size:   $8 (8)
  471.                         ENDR
  472. ; typedef struct FormatListRec *        FormatListRecPtr
  473.  
  474. ;
  475. ; * SizeListRec built from FormatListRecs as described above.
  476. ;
  477. SizeListRec                RECORD 0
  478. sizeListFlags             ds.w    1                ; offset: $0 (0)        ;  flags as set by external file system 
  479. sizeEntry                 ds        FormatListRec    ; offset: $2 (2)        ;  disk driver format list record 
  480. sizeof                     EQU *                    ; size:   $A (10)
  481.                         ENDR
  482. ; typedef struct SizeListRec *            SizeListRecPtr
  483.  
  484. ;
  485. ; * paramBlock for the diCIEvaluateSize call
  486. ;
  487. DICIEvaluateSizeRec        RECORD 0
  488. defaultSizeIndex         ds.w    1                ; offset: $0 (0)        ;  default size for this FS 
  489. numSizeEntries             ds.w    1                ; offset: $2 (2)        ;  number of size entries 
  490. driveNumber                 ds.w    1                ; offset: $4 (4)        ;  drive number 
  491. sizeListPtr                 ds.l    1                ; offset: $6 (6)        ;  ptr to size entry table 
  492. sectorSize                 ds.w    1                ; offset: $A (10)        ;  bytes per sector 
  493. sizeof                     EQU *                    ; size:   $C (12)
  494.                         ENDR
  495. ; typedef struct DICIEvaluateSizeRec *    DICIEvaluateSizeRecPtr
  496.  
  497. ;
  498. ; * paramBlock for the diCIExtendedZero call
  499. ;
  500. DICIExtendedZeroRec        RECORD 0
  501. driveNumber                 ds.w    1                ; offset: $0 (0)        ;  drive number 
  502. volNamePtr                 ds.l    1                ; offset: $2 (2)        ;  ptr to volume name string 
  503. fsid                     ds.w    1                ; offset: $6 (6)        ;  file system ID 
  504. volTypeSelector             ds.w    1                ; offset: $8 (8)        ;  volume type selector, if supports more than 1 type 
  505. numDefectBlocks             ds.w    1                ; offset: $A (10)        ;  number of bad logical blocks 
  506. defectListSize             ds.w    1                ; offset: $C (12)        ;  size of the defect list buffer in bytes 
  507. defectListPtr             ds.l    1                ; offset: $E (14)        ;  pointer to defect list buffer 
  508. volSize                     ds.l    1                ; offset: $12 (18)        ;  size of volume in SECTORs 
  509. sectorSize                 ds.w    1                ; offset: $16 (22)        ;  bytes per sector 
  510. extendedInfoPtr             ds.l    1                ; offset: $18 (24)        ;  ptr to extended info 
  511. sizeof                     EQU *                    ; size:   $1C (28)
  512.                         ENDR
  513. ; typedef struct DICIExtendedZeroRec *    DICIExtendedZeroRecPtr
  514.  
  515. ;
  516. ; * paramBlock for the diCIValidateVolName call
  517. ;
  518. DICIValidateVolNameRec    RECORD 0
  519. theChar                     ds.b    1                ; offset: $0 (0)        ;  the character to validate 
  520. hasMessageBuffer         ds.b    1                ; offset: $1 (1)        ;  false if no message 
  521. charOffset                 ds.w    1                ; offset: $2 (2)        ;  position of the current character (first char = 1) 
  522. messageBufferPtr         ds.l    1                ; offset: $4 (4)        ;  pointer to message buffer or nil 
  523. charByteType             ds.w    1                ; offset: $8 (8)        ;  theChar's byte type (smSingleByte, smFirstByte, or smLastByte) 
  524. sizeof                     EQU *                    ; size:   $A (10)
  525.                         ENDR
  526. ; typedef struct DICIValidateVolNameRec * DICIValidateVolNameRecPtr
  527.  
  528. ;
  529. ; * paramBlock for the diCIGetVolTypeInfo call
  530. ;
  531. DICIGetVolTypeInfoRec    RECORD 0
  532. volSize                     ds.l    1                ; offset: $0 (0)        ;  size of volume in SECTORs 
  533. sectorSize                 ds.w    1                ; offset: $4 (4)        ;  bytes per sector 
  534. numVolTypes                 ds.w    1                ; offset: $6 (6)        ;  number of volume types supported 
  535. volTypesBuffer             ds.b    4 * Str31.sizeof ; offset: $8 (8)        ;  4 string buffers 
  536. sizeof                     EQU *                    ; size:   $88 (136)
  537.                         ENDR
  538. ; typedef struct DICIGetVolTypeInfoRec * DICIGetVolTypeInfoRecPtr
  539.  
  540. ;
  541. ; * paramBlock for the diCIGetFormatString call
  542. ;
  543. DICIGetFormatStringRec    RECORD 0
  544. volSize                     ds.l    1                ; offset: $0 (0)        ;  volume size in SECTORs 
  545. sectorSize                 ds.w    1                ; offset: $4 (4)        ;  sector size 
  546. volTypeSelector             ds.w    1                ; offset: $6 (6)        ;  volume type selector 
  547. stringKind                 ds.w    1                ; offset: $8 (8)        ;  sub-function = type of string 
  548. stringBuffer             ds        Str255            ; offset: $A (10)        ;  string buffer 
  549. sizeof                     EQU *                    ; size:   $10A (266)
  550.                         ENDR
  551. ; typedef struct DICIGetFormatStringRec * DICIGetFormatStringRecPtr
  552.  
  553. ;
  554. ; * paramBlock for the diCIGetExtendedFormatParams call
  555. ;
  556. DICIGetExtendedFormatRec RECORD 0
  557. driveNumber                 ds.w    1                ; offset: $0 (0)        ;  drive number 
  558. volTypeSelector             ds.w    1                ; offset: $2 (2)        ;  volume type selector or 0 
  559. volSize                     ds.l    1                ; offset: $4 (4)        ;  size of volume in SECTORs 
  560. sectorSize                 ds.w    1                ; offset: $8 (8)        ;  bytes per sector 
  561. fileSystemSpecPtr         ds.l    1                ; offset: $A (10)        ;  pointer to the foreign file system's FSSpec 
  562. extendedInfoPtr             ds.l    1                ; offset: $E (14)        ;  pointer to extended parameter structure 
  563. sizeof                     EQU *                    ; size:   $12 (18)
  564.                         ENDR
  565. ; typedef struct DICIGetExtendedFormatRec * DICIGetExtendedFormatRecPtr
  566.  
  567. ;
  568. ; *    File System Manager records
  569. ;
  570.  
  571.  
  572. FSDRec                    RECORD 0
  573. fsdLink                     ds.l    1                ; offset: $0 (0)        ;  ptr to next 
  574. fsdLength                 ds.w    1                ; offset: $4 (4)        ;  length of this FSD in BYTES 
  575. fsdVersion                 ds.w    1                ; offset: $6 (6)        ;  version number 
  576. fileSystemFSID             ds.w    1                ; offset: $8 (8)        ;  file system id 
  577. fileSystemName             ds        Str31            ; offset: $A (10)        ;  file system name 
  578. fileSystemSpec             ds        FSSpec            ; offset: $2A (42)        ;  foreign file system's FSSpec 
  579. fileSystemGlobalsPtr     ds.l    1                ; offset: $70 (112)        ;  ptr to file system globals 
  580. fileSystemCommProc         ds.l    1                ; offset: $74 (116)        ;  communication proc with the FFS 
  581. reserved3                 ds.l    1                ; offset: $78 (120)        ;  --reserved, must be zero-- 
  582. reserved2                 ds.l    1                ; offset: $7C (124)        ;  --reserved, must be zero-- 
  583. reserved1                 ds.l    1                ; offset: $80 (128)        ;  --reserved, must be zero-- 
  584. fsdHFSCI                 ds        HFSCIRec        ; offset: $84 (132)        ;  HFS component interface    
  585. fsdDICI                     ds        DICIRec            ; offset: $AC (172)        ;  Disk Initialization component interface 
  586. sizeof                     EQU *                    ; size:   $C4 (196)
  587.                         ENDR
  588. ; typedef struct FSDRec *                FSDRecPtr
  589.  
  590. FSMGetIconInfoRec        RECORD 0
  591. theIcon                     ds.l    32                ; offset: $0 (0)        ;  The ICN# structure 
  592. theMask                     ds.l    32                ; offset: $80 (128)        ;  The mask for the icon above 
  593. whereStr                 ds        Str255            ; offset: $100 (256)
  594. sizeof                     EQU *                    ; size:   $200 (512)
  595.                         ENDR
  596. ; typedef struct FSMGetIconInfoRec *    FSMGetIconInfoRecPtr
  597.  
  598. ;
  599. ; * paramBlock for ffsGetIconMessage and fsmGetFSIconMessage
  600. ;
  601. FSMGetIconRec            RECORD 0
  602. refNum                     ds.w    1                ; offset: $0 (0)        ;  target drive num or volume refnum 
  603. iconBufferPtr             ds.l    1                ; offset: $2 (2)        ;  pointer to icon buffer 
  604. requestSize                 ds.l    1                ; offset: $6 (6)        ;  requested size of the icon buffer 
  605. actualSize                 ds.l    1                ; offset: $A (10)        ;  actual size of the icon data returned 
  606. iconType                 ds.b    1                ; offset: $E (14)        ;  kind of icon 
  607. isEjectable                 ds.b    1                ; offset: $F (15)        ;  true if the device is ejectable 
  608. driveQElemPtr             ds.l    1                ; offset: $10 (16)        ;  pointer to DQE 
  609. fileSystemSpecPtr         ds.l    1                ; offset: $14 (20)        ;  pointer to foreign file system's FSSpec 
  610. reserved1                 ds.l    1                ; offset: $18 (24)        ;  --reserved, must be zero-- 
  611. sizeof                     EQU *                    ; size:   $1C (28)
  612.                         ENDR
  613. ; typedef struct FSMGetIconRec *        FSMGetIconRecPtr
  614.  
  615. ;
  616. ; *    HFS Utility routine prototypes
  617. ;
  618. ;
  619. ; pascal OSErr UTAllocateFCB(short *fileRefNum, FCBRecPtr *fileCtrlBlockPtr)
  620. ;
  621.     IF ¨ GENERATINGCFM THEN
  622.         Macro
  623.         _UTAllocateFCB
  624.             moveq               #0,D0
  625.             dc.w                $A824
  626.         EndM
  627.     ELSE
  628.         IMPORT_CFM_FUNCTION UTAllocateFCB
  629.     ENDIF
  630.  
  631. ;
  632. ; pascal OSErr UTReleaseFCB(short fileRefNum)
  633. ;
  634.     IF ¨ GENERATINGCFM THEN
  635.         Macro
  636.         _UTReleaseFCB
  637.             moveq               #1,D0
  638.             dc.w                $A824
  639.         EndM
  640.     ELSE
  641.         IMPORT_CFM_FUNCTION UTReleaseFCB
  642.     ENDIF
  643.  
  644. ;
  645. ; pascal OSErr UTLocateFCB(VCBPtr volCtrlBlockPtr, unsigned long fileNum, StringPtr namePtr, short *fileRefNum, FCBRecPtr *fileCtrlBlockPtr)
  646. ;
  647.     IF ¨ GENERATINGCFM THEN
  648.         Macro
  649.         _UTLocateFCB
  650.             moveq               #2,D0
  651.             dc.w                $A824
  652.         EndM
  653.     ELSE
  654.         IMPORT_CFM_FUNCTION UTLocateFCB
  655.     ENDIF
  656.  
  657. ;
  658. ; pascal OSErr UTLocateNextFCB(VCBPtr volCtrlBlockPtr, unsigned long fileNum, StringPtr namePtr, short *fileRefNum, FCBRecPtr *fileCtrlBlockPtr)
  659. ;
  660.     IF ¨ GENERATINGCFM THEN
  661.         Macro
  662.         _UTLocateNextFCB
  663.             moveq               #3,D0
  664.             dc.w                $A824
  665.         EndM
  666.     ELSE
  667.         IMPORT_CFM_FUNCTION UTLocateNextFCB
  668.     ENDIF
  669.  
  670. ;
  671. ; pascal OSErr UTIndexFCB(VCBPtr volCtrlBlockPtr, short *fileRefNum, FCBRecPtr *fileCtrlBlockPtr)
  672. ;
  673.     IF ¨ GENERATINGCFM THEN
  674.         Macro
  675.         _UTIndexFCB
  676.             moveq               #4,D0
  677.             dc.w                $A824
  678.         EndM
  679.     ELSE
  680.         IMPORT_CFM_FUNCTION UTIndexFCB
  681.     ENDIF
  682.  
  683. ;
  684. ; pascal OSErr UTResolveFCB(short fileRefNum, FCBRecPtr *fileCtrlBlockPtr)
  685. ;
  686.     IF ¨ GENERATINGCFM THEN
  687.         Macro
  688.         _UTResolveFCB
  689.             moveq               #5,D0
  690.             dc.w                $A824
  691.         EndM
  692.     ELSE
  693.         IMPORT_CFM_FUNCTION UTResolveFCB
  694.     ENDIF
  695.  
  696. ;
  697. ; pascal OSErr UTAllocateVCB(unsigned short *sysVCBLength, VCBPtr *volCtrlBlockPtr, unsigned short addSize)
  698. ;
  699.     IF ¨ GENERATINGCFM THEN
  700.         Macro
  701.         _UTAllocateVCB
  702.             moveq               #6,D0
  703.             dc.w                $A824
  704.         EndM
  705.     ELSE
  706.         IMPORT_CFM_FUNCTION UTAllocateVCB
  707.     ENDIF
  708.  
  709. ;
  710. ; pascal OSErr UTAddNewVCB(short driveNum, short *vRefNum, VCBPtr volCtrlBlockPtr)
  711. ;
  712.     IF ¨ GENERATINGCFM THEN
  713.         Macro
  714.         _UTAddNewVCB
  715.             moveq               #7,D0
  716.             dc.w                $A824
  717.         EndM
  718.     ELSE
  719.         IMPORT_CFM_FUNCTION UTAddNewVCB
  720.     ENDIF
  721.  
  722. ;
  723. ; pascal OSErr UTDisposeVCB(VCBPtr volCtrlBlockPtr)
  724. ;
  725.     IF ¨ GENERATINGCFM THEN
  726.         Macro
  727.         _UTDisposeVCB
  728.             moveq               #8,D0
  729.             dc.w                $A824
  730.         EndM
  731.     ELSE
  732.         IMPORT_CFM_FUNCTION UTDisposeVCB
  733.     ENDIF
  734.  
  735. ;
  736. ; pascal OSErr UTLocateVCBByRefNum(short refNum, short *vRefNum, VCBPtr *volCtrlBlockPtr)
  737. ;
  738.     IF ¨ GENERATINGCFM THEN
  739.         Macro
  740.         _UTLocateVCBByRefNum
  741.             moveq               #9,D0
  742.             dc.w                $A824
  743.         EndM
  744.     ELSE
  745.         IMPORT_CFM_FUNCTION UTLocateVCBByRefNum
  746.     ENDIF
  747.  
  748. ;
  749. ; pascal OSErr UTLocateVCBByName(StringPtr namePtr, short *moreMatches, short *vRefNum, VCBPtr *volCtrlBlockPtr)
  750. ;
  751.     IF ¨ GENERATINGCFM THEN
  752.         Macro
  753.         _UTLocateVCBByName
  754.             moveq               #10,D0
  755.             dc.w                $A824
  756.         EndM
  757.     ELSE
  758.         IMPORT_CFM_FUNCTION UTLocateVCBByName
  759.     ENDIF
  760.  
  761. ;
  762. ; pascal OSErr UTLocateNextVCB(StringPtr namePtr, short *moreMatches, short *vRefNum, VCBPtr *volCtrlBlockPtr)
  763. ;
  764.     IF ¨ GENERATINGCFM THEN
  765.         Macro
  766.         _UTLocateNextVCB
  767.             moveq               #11,D0
  768.             dc.w                $A824
  769.         EndM
  770.     ELSE
  771.         IMPORT_CFM_FUNCTION UTLocateNextVCB
  772.     ENDIF
  773.  
  774. ;
  775. ; pascal OSErr UTAllocateWDCB(WDPBPtr paramBlock)
  776. ;
  777.     IF ¨ GENERATINGCFM THEN
  778.         Macro
  779.         _UTAllocateWDCB
  780.             moveq               #12,D0
  781.             dc.w                $A824
  782.         EndM
  783.     ELSE
  784.         IMPORT_CFM_FUNCTION UTAllocateWDCB
  785.     ENDIF
  786.  
  787. ;
  788. ; pascal OSErr UTReleaseWDCB(short wdRefNum)
  789. ;
  790.     IF ¨ GENERATINGCFM THEN
  791.         Macro
  792.         _UTReleaseWDCB
  793.             moveq               #13,D0
  794.             dc.w                $A824
  795.         EndM
  796.     ELSE
  797.         IMPORT_CFM_FUNCTION UTReleaseWDCB
  798.     ENDIF
  799.  
  800. ;
  801. ; pascal OSErr UTResolveWDCB(long procID, short wdIndex, short wdRefNum, WDCBRecPtr *wdCtrlBlockPtr)
  802. ;
  803.     IF ¨ GENERATINGCFM THEN
  804.         Macro
  805.         _UTResolveWDCB
  806.             moveq               #14,D0
  807.             dc.w                $A824
  808.         EndM
  809.     ELSE
  810.         IMPORT_CFM_FUNCTION UTResolveWDCB
  811.     ENDIF
  812.  
  813. ;
  814. ; pascal OSErr UTFindDrive(short driveNum, DrvQElPtr *driveQElementPtr)
  815. ;
  816.     IF ¨ GENERATINGCFM THEN
  817.         Macro
  818.         _UTFindDrive
  819.             moveq               #15,D0
  820.             dc.w                $A824
  821.         EndM
  822.     ELSE
  823.         IMPORT_CFM_FUNCTION UTFindDrive
  824.     ENDIF
  825.  
  826. ;
  827. ; pascal OSErr UTAdjustEOF(short fileRefNum)
  828. ;
  829.     IF ¨ GENERATINGCFM THEN
  830.         Macro
  831.         _UTAdjustEOF
  832.             moveq               #16,D0
  833.             dc.w                $A824
  834.         EndM
  835.     ELSE
  836.         IMPORT_CFM_FUNCTION UTAdjustEOF
  837.     ENDIF
  838.  
  839. ;
  840. ; pascal OSErr UTSetDefaultVol(long nodeHint, unsigned long dirID, short refNum)
  841. ;
  842.     IF ¨ GENERATINGCFM THEN
  843.         Macro
  844.         _UTSetDefaultVol
  845.             moveq               #17,D0
  846.             dc.w                $A824
  847.         EndM
  848.     ELSE
  849.         IMPORT_CFM_FUNCTION UTSetDefaultVol
  850.     ENDIF
  851.  
  852. ;
  853. ; pascal OSErr UTGetDefaultVol(WDPBPtr paramBlock)
  854. ;
  855.     IF ¨ GENERATINGCFM THEN
  856.         Macro
  857.         _UTGetDefaultVol
  858.             moveq               #18,D0
  859.             dc.w                $A824
  860.         EndM
  861.     ELSE
  862.         IMPORT_CFM_FUNCTION UTGetDefaultVol
  863.     ENDIF
  864.  
  865. ;
  866. ; pascal OSErr UTEjectVol(VCBPtr volCtrlBlockPtr)
  867. ;
  868.     IF ¨ GENERATINGCFM THEN
  869.         Macro
  870.         _UTEjectVol
  871.             moveq               #43,D0
  872.             dc.w                $A824
  873.         EndM
  874.     ELSE
  875.         IMPORT_CFM_FUNCTION UTEjectVol
  876.     ENDIF
  877.  
  878. ;
  879. ; pascal OSErr UTCheckWDRefNum(short wdRefNum)
  880. ;
  881.     IF ¨ GENERATINGCFM THEN
  882.         Macro
  883.         _UTCheckWDRefNum
  884.             moveq               #19,D0
  885.             dc.w                $A824
  886.         EndM
  887.     ELSE
  888.         IMPORT_CFM_FUNCTION UTCheckWDRefNum
  889.     ENDIF
  890.  
  891. ;
  892. ; pascal OSErr UTCheckFileRefNum(short fileRefNum)
  893. ;
  894.     IF ¨ GENERATINGCFM THEN
  895.         Macro
  896.         _UTCheckFileRefNum
  897.             moveq               #20,D0
  898.             dc.w                $A824
  899.         EndM
  900.     ELSE
  901.         IMPORT_CFM_FUNCTION UTCheckFileRefNum
  902.     ENDIF
  903.  
  904. ;
  905. ; pascal OSErr UTCheckVolRefNum(short vRefNum)
  906. ;
  907.     IF ¨ GENERATINGCFM THEN
  908.         Macro
  909.         _UTCheckVolRefNum
  910.             moveq               #21,D0
  911.             dc.w                $A824
  912.         EndM
  913.     ELSE
  914.         IMPORT_CFM_FUNCTION UTCheckVolRefNum
  915.     ENDIF
  916.  
  917. ;
  918. ; pascal OSErr UTCheckPermission(VCBPtr volCtrlBlockPtr, short *modByte, unsigned long fileNum, ParmBlkPtr paramBlock)
  919. ;
  920.     IF ¨ GENERATINGCFM THEN
  921.         Macro
  922.         _UTCheckPermission
  923.             moveq               #22,D0
  924.             dc.w                $A824
  925.         EndM
  926.     ELSE
  927.         IMPORT_CFM_FUNCTION UTCheckPermission
  928.     ENDIF
  929.  
  930. ;
  931. ; pascal OSErr UTCheckVolOffline(short vRefNum)
  932. ;
  933.     IF ¨ GENERATINGCFM THEN
  934.         Macro
  935.         _UTCheckVolOffline
  936.             moveq               #23,D0
  937.             dc.w                $A824
  938.         EndM
  939.     ELSE
  940.         IMPORT_CFM_FUNCTION UTCheckVolOffline
  941.     ENDIF
  942.  
  943. ;
  944. ; pascal OSErr UTCheckVolModifiable(short vRefNum)
  945. ;
  946.     IF ¨ GENERATINGCFM THEN
  947.         Macro
  948.         _UTCheckVolModifiable
  949.             moveq               #24,D0
  950.             dc.w                $A824
  951.         EndM
  952.     ELSE
  953.         IMPORT_CFM_FUNCTION UTCheckVolModifiable
  954.     ENDIF
  955.  
  956. ;
  957. ; pascal OSErr UTCheckFileModifiable(short fileRefNum)
  958. ;
  959.     IF ¨ GENERATINGCFM THEN
  960.         Macro
  961.         _UTCheckFileModifiable
  962.             moveq               #25,D0
  963.             dc.w                $A824
  964.         EndM
  965.     ELSE
  966.         IMPORT_CFM_FUNCTION UTCheckFileModifiable
  967.     ENDIF
  968.  
  969. ;
  970. ; pascal OSErr UTCheckDirBusy(VCBPtr volCtrlBlockPtr, unsigned long dirID)
  971. ;
  972.     IF ¨ GENERATINGCFM THEN
  973.         Macro
  974.         _UTCheckDirBusy
  975.             moveq               #26,D0
  976.             dc.w                $A824
  977.         EndM
  978.     ELSE
  979.         IMPORT_CFM_FUNCTION UTCheckDirBusy
  980.     ENDIF
  981.  
  982. ;
  983. ; pascal OSErr UTParsePathname(short *volNamelength, StringPtr namePtr)
  984. ;
  985.     IF ¨ GENERATINGCFM THEN
  986.         Macro
  987.         _UTParsePathname
  988.             moveq               #27,D0
  989.             dc.w                $A824
  990.         EndM
  991.     ELSE
  992.         IMPORT_CFM_FUNCTION UTParsePathname
  993.     ENDIF
  994.  
  995. ;
  996. ; pascal OSErr UTGetPathComponentName(ParsePathRecPtr parseRec)
  997. ;
  998.     IF ¨ GENERATINGCFM THEN
  999.         Macro
  1000.         _UTGetPathComponentName
  1001.             moveq               #28,D0
  1002.             dc.w                $A824
  1003.         EndM
  1004.     ELSE
  1005.         IMPORT_CFM_FUNCTION UTGetPathComponentName
  1006.     ENDIF
  1007.  
  1008. ;
  1009. ; pascal OSErr UTDetermineVol(ParmBlkPtr paramBlock, short *status, short *moreMatches, short *vRefNum, VCBPtr *volCtrlBlockPtr)
  1010. ;
  1011.     IF ¨ GENERATINGCFM THEN
  1012.         Macro
  1013.         _UTDetermineVol
  1014.             moveq               #29,D0
  1015.             dc.w                $A824
  1016.         EndM
  1017.     ELSE
  1018.         IMPORT_CFM_FUNCTION UTDetermineVol
  1019.     ENDIF
  1020.  
  1021. ;
  1022. ; pascal OSErr UTGetBlock(short refNum, void *log2PhyProc, unsigned long blockNum, short gbOption, Ptr *buffer)
  1023. ;
  1024.     IF ¨ GENERATINGCFM THEN
  1025.         Macro
  1026.         _UTGetBlock
  1027.             moveq               #31,D0
  1028.             dc.w                $A824
  1029.         EndM
  1030.     ELSE
  1031.         IMPORT_CFM_FUNCTION UTGetBlock
  1032.     ENDIF
  1033.  
  1034. ;
  1035. ; pascal OSErr UTReleaseBlock(Ptr buffer, short rbOption)
  1036. ;
  1037.     IF ¨ GENERATINGCFM THEN
  1038.         Macro
  1039.         _UTReleaseBlock
  1040.             moveq               #32,D0
  1041.             dc.w                $A824
  1042.         EndM
  1043.     ELSE
  1044.         IMPORT_CFM_FUNCTION UTReleaseBlock
  1045.     ENDIF
  1046.  
  1047. ;
  1048. ; pascal OSErr UTFlushCache(short refNum, short fcOption)
  1049. ;
  1050.     IF ¨ GENERATINGCFM THEN
  1051.         Macro
  1052.         _UTFlushCache
  1053.             moveq               #33,D0
  1054.             dc.w                $A824
  1055.         EndM
  1056.     ELSE
  1057.         IMPORT_CFM_FUNCTION UTFlushCache
  1058.     ENDIF
  1059.  
  1060. ;
  1061. ; pascal OSErr UTMarkDirty(Ptr buffer)
  1062. ;
  1063.     IF ¨ GENERATINGCFM THEN
  1064.         Macro
  1065.         _UTMarkDirty
  1066.             moveq               #35,D0
  1067.             dc.w                $A824
  1068.         EndM
  1069.     ELSE
  1070.         IMPORT_CFM_FUNCTION UTMarkDirty
  1071.     ENDIF
  1072.  
  1073. ;
  1074. ; pascal OSErr UTTrashVolBlocks(VCBPtr volCtrlBlockPtr)
  1075. ;
  1076.     IF ¨ GENERATINGCFM THEN
  1077.         Macro
  1078.         _UTTrashVolBlocks
  1079.             moveq               #36,D0
  1080.             dc.w                $A824
  1081.         EndM
  1082.     ELSE
  1083.         IMPORT_CFM_FUNCTION UTTrashVolBlocks
  1084.     ENDIF
  1085.  
  1086. ;
  1087. ; pascal OSErr UTTrashFileBlocks(VCBPtr volCtrlBlockPtr, unsigned long fileNum)
  1088. ;
  1089.     IF ¨ GENERATINGCFM THEN
  1090.         Macro
  1091.         _UTTrashFileBlocks
  1092.             moveq               #37,D0
  1093.             dc.w                $A824
  1094.         EndM
  1095.     ELSE
  1096.         IMPORT_CFM_FUNCTION UTTrashFileBlocks
  1097.     ENDIF
  1098.  
  1099. ;
  1100. ; pascal OSErr UTTrashBlocks(unsigned long beginPosition, unsigned long byteCount, VCBPtr volCtrlBlockPtr, short fileRefNum, short tbOption)
  1101. ;
  1102.     IF ¨ GENERATINGCFM THEN
  1103.         Macro
  1104.         _UTTrashBlocks
  1105.             moveq               #38,D0
  1106.             dc.w                $A824
  1107.         EndM
  1108.     ELSE
  1109.         IMPORT_CFM_FUNCTION UTTrashBlocks
  1110.     ENDIF
  1111.  
  1112. ;
  1113. ; pascal OSErr UTCacheReadIP(void *log2PhyProc, unsigned long filePosition, Ptr ioBuffer, short fileRefNum, unsigned long reqCount, unsigned long *actCount, short cacheOption)
  1114. ;
  1115.     IF ¨ GENERATINGCFM THEN
  1116.         Macro
  1117.         _UTCacheReadIP
  1118.             moveq               #39,D0
  1119.             dc.w                $A824
  1120.         EndM
  1121.     ELSE
  1122.         IMPORT_CFM_FUNCTION UTCacheReadIP
  1123.     ENDIF
  1124.  
  1125. ;
  1126. ; pascal OSErr UTCacheWriteIP(void *log2PhyProc, unsigned long filePosition, Ptr ioBuffer, short fileRefNum, unsigned long reqCount, unsigned long *actCount, short cacheOption)
  1127. ;
  1128.     IF ¨ GENERATINGCFM THEN
  1129.         Macro
  1130.         _UTCacheWriteIP
  1131.             moveq               #40,D0
  1132.             dc.w                $A824
  1133.         EndM
  1134.     ELSE
  1135.         IMPORT_CFM_FUNCTION UTCacheWriteIP
  1136.     ENDIF
  1137.  
  1138. ;
  1139. ; pascal OSErr UTBlockInFQHashP(short vRefNum, unsigned long diskBlock)
  1140. ;
  1141.     IF ¨ GENERATINGCFM THEN
  1142.         Macro
  1143.         _UTBlockInFQHashP
  1144.             moveq               #44,D0
  1145.             dc.w                $A824
  1146.         EndM
  1147.     ELSE
  1148.         IMPORT_CFM_FUNCTION UTBlockInFQHashP
  1149.     ENDIF
  1150.  
  1151. ;
  1152. ; *    File System Manager call prototypes
  1153. ;
  1154. ;
  1155. ; pascal OSErr InstallFS(FSDRecPtr fsdPtr)
  1156. ;
  1157.     IF GENERATINGCFM THEN
  1158.         IMPORT_CFM_FUNCTION InstallFS
  1159.     ENDIF
  1160.  
  1161. ;
  1162. ; pascal OSErr RemoveFS(short fsid)
  1163. ;
  1164.     IF GENERATINGCFM THEN
  1165.         IMPORT_CFM_FUNCTION RemoveFS
  1166.     ENDIF
  1167.  
  1168. ;
  1169. ; pascal OSErr SetFSInfo(short fsid, short bufSize, FSDRecPtr fsdPtr)
  1170. ;
  1171.     IF GENERATINGCFM THEN
  1172.         IMPORT_CFM_FUNCTION SetFSInfo
  1173.     ENDIF
  1174.  
  1175. ;
  1176. ; pascal OSErr GetFSInfo(short selector, short key, short *bufSize, FSDRecPtr fsdPtr)
  1177. ;
  1178.     IF GENERATINGCFM THEN
  1179.         IMPORT_CFM_FUNCTION GetFSInfo
  1180.     ENDIF
  1181.  
  1182. ;
  1183. ; pascal OSErr InformFSM(short theMessage, void *paramBlock)
  1184. ;
  1185.     IF GENERATINGCFM THEN
  1186.         IMPORT_CFM_FUNCTION InformFSM
  1187.     ENDIF
  1188.  
  1189. ;
  1190. ; pascal OSErr InformFFS(short fsid, void *paramBlock)
  1191. ;
  1192.     IF GENERATINGCFM THEN
  1193.         IMPORT_CFM_FUNCTION InformFFS
  1194.     ENDIF
  1195.  
  1196.     ENDIF
  1197.     ENDIF ; __FSM__ 
  1198.  
  1199.